package com.wonders.hisdoctor.station.project.base.domain;

import com.wonders.his.common.utils.validator.group.PrimaryGroup;
import java.util.Date;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;

import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import javax.validation.constraints.NotNull;
import java.io.Serializable;

import lombok.Data;
import lombok.ToString;
import lombok.experimental.Accessors;

/**
 * <p>病人主索引</p>
 * <p>db_table: PAT_MASTER_INDEX</p>
 * @author tong-aj
 * @date 2021/03/09
 */
@ApiModel("病人主索引")
@Accessors(chain = true)
@Data
@ToString
@TableName("PAT_MASTER_INDEX")
public class PatMasterIndex implements Serializable {

    private static final long serialVersionUID = -6153665829539149618L;

    /** `主键` db_field: PATIENT_ID; desc: 病人标识号：病人唯一标识号，可以由用户赋予具体的含义，如：病案号，门诊号等 */
    @ApiModelProperty("病人标识号：病人唯一标识号，可以由用户赋予具体的含义，如：病案号，门诊号等")
    @TableId
    @NotNull(message = "病人标识号：病人唯一标识号，可以由用户赋予具体的含义，如：病案号，门诊号等不能为空", groups = PrimaryGroup.class)
    @TableField("PATIENT_ID")
    private String patientId;

    /** db_field: INP_NO; desc: 住院号：可选的病人标识，可为空 */
    @ApiModelProperty("住院号：可选的病人标识，可为空")
    @TableField("INP_NO")
    private String inpNo;

    /** db_field: NAME; desc: 姓名：病人姓名 */
    @ApiModelProperty("姓名：病人姓名")
    @TableField("NAME")
    private String name;

    /** db_field: NAME_PHONETIC; desc: 姓名拼音：病人姓名拼音，大写，字间用一个空格分隔，超长截断 */
    @ApiModelProperty("姓名拼音：病人姓名拼音，大写，字间用一个空格分隔，超长截断")
    @TableField("NAME_PHONETIC")
    private String namePhonetic;

    /** db_field: SEX; desc: 性别：男、女、未知，本系统定义，见1.1性别字典 */
    @ApiModelProperty("性别：男、女、未知，本系统定义，见1.1性别字典")
    @TableField("SEX")
    private String sex;

    /** db_field: DATE_OF_BIRTH; desc: 出生日期 */
    @ApiModelProperty("出生日期")
    @TableField("DATE_OF_BIRTH")
    private Date dateOfBirth;

    /** db_field: BIRTH_PLACE; desc: 出生地：指定省市县，使用代码，见2.2行政区字典 */
    @ApiModelProperty("出生地：指定省市县，使用代码，见2.2行政区字典")
    @TableField("BIRTH_PLACE")
    private String birthPlace;

    /** db_field: CITIZENSHIP; desc: 国籍：使用国家代码，见2.1国家及地区字典 */
    @ApiModelProperty("国籍：使用国家代码，见2.1国家及地区字典")
    @TableField("CITIZENSHIP")
    private String citizenship;

    /** db_field: NATION; desc: 民族：民族规范名称，见1.3民族字典 */
    @ApiModelProperty("民族：民族规范名称，见1.3民族字典")
    @TableField("NATION")
    private String nation;

    /** db_field: ID_NO; desc: 身份证号 */
    @ApiModelProperty("身份证号")
    @TableField("ID_NO")
    private String idNo;

    /** db_field: IDENTITY; desc: 身份：由身份登记子系统生成，住院登记子系统在办理入院时更新。使用规范名称，由用户定义，见1.6身份字典 */
    @ApiModelProperty("身份：由身份登记子系统生成，住院登记子系统在办理入院时更新。使用规范名称，由用户定义，见1.6身份字典")
    @TableField("IDENTITY")
    private String identity;

    /** db_field: CHARGE_TYPE; desc: 费别：由身份登记子系统生成，住院登记子系统在办理入院时更新。使用规范名称，由用户定义，见1.9费别字典 */
    @ApiModelProperty("费别：由身份登记子系统生成，住院登记子系统在办理入院时更新。使用规范名称，由用户定义，见1.9费别字典")
    @TableField("CHARGE_TYPE")
    private String chargeType;

    /** db_field: UNIT_IN_CONTRACT; desc: 合同单位：如果病人所在单位为本医院的合同单位或体系单位，则使用代码，否则为空。由身份登记子系统生成，住院登记子系统在办理入院时更新。代码由用户定义，见2.4合同单位记录 */
    @ApiModelProperty("合同单位：如果病人所在单位为本医院的合同单位或体系单位，则使用代码，否则为空。由身份登记子系统生成，住院登记子系统在办理入院时更新。代码由用户定义，见2.4合同单位记录")
    @TableField("UNIT_IN_CONTRACT")
    private String unitInContract;

    /** db_field: MAILING_ADDRESS; desc: 通信地址：指永久通信地址 */
    @ApiModelProperty("通信地址：指永久通信地址")
    @TableField("MAILING_ADDRESS")
    private String mailingAddress;

    /** db_field: ZIP_CODE; desc: 邮政编码：对应通信地址的邮政编码 */
    @ApiModelProperty("邮政编码：对应通信地址的邮政编码")
    @TableField("ZIP_CODE")
    private String zipCode;

    /** db_field: PHONE_NUMBER_HOME; desc: 家庭电话号码 */
    @ApiModelProperty("家庭电话号码")
    @TableField("PHONE_NUMBER_HOME")
    private String phoneNumberHome;

    /** db_field: PHONE_NUMBER_BUSINESS; desc: 单位电话号码 */
    @ApiModelProperty("单位电话号码")
    @TableField("PHONE_NUMBER_BUSINESS")
    private String phoneNumberBusiness;

    /** db_field: NEXT_OF_KIN; desc: 联系人姓名：病人的亲属姓名 */
    @ApiModelProperty("联系人姓名：病人的亲属姓名")
    @TableField("NEXT_OF_KIN")
    private String nextOfKin;

    /** db_field: RELATIONSHIP; desc: 与联系人关系：夫妻、父子等，使用代码，见1.19社会关系字典 */
    @ApiModelProperty("与联系人关系：夫妻、父子等，使用代码，见1.19社会关系字典")
    @TableField("RELATIONSHIP")
    private String relationship;

    /** db_field: NEXT_OF_KIN_ADDR; desc: 联系人地址 */
    @ApiModelProperty("联系人地址")
    @TableField("NEXT_OF_KIN_ADDR")
    private String nextOfKinAddr;

    /** db_field: NEXT_OF_KIN_ZIP_CODE; desc: 联系人邮政编码 */
    @ApiModelProperty("联系人邮政编码")
    @TableField("NEXT_OF_KIN_ZIP_CODE")
    private String nextOfKinZipCode;

    /** db_field: NEXT_OF_KIN_PHONE; desc: 联系人电话号码 */
    @ApiModelProperty("联系人电话号码")
    @TableField("NEXT_OF_KIN_PHONE")
    private String nextOfKinPhone;

    /** db_field: LAST_VISIT_DATE; desc: 上次就诊日期：由挂号与预约子系统根据就诊记录填写 */
    @ApiModelProperty("上次就诊日期：由挂号与预约子系统根据就诊记录填写")
    @TableField("LAST_VISIT_DATE")
    private Date lastVisitDate;

    /** db_field: VIP_INDICATOR; desc: 重要人物标志：1-VIP 0-非VIP */
    @ApiModelProperty("重要人物标志：1-VIP 0-非VIP")
    @TableField("VIP_INDICATOR")
    private Integer vipIndicator;

    /** db_field: CREATE_DATE; desc: 建卡日期 */
    @ApiModelProperty("建卡日期")
    @TableField("CREATE_DATE")
    private Date createDate;

    /** db_field: OPERATOR; desc: 操作员：最后修改本记录的操作员姓名 */
    @ApiModelProperty("操作员：最后修改本记录的操作员姓名")
    @TableField("OPERATOR")
    private String operator;

    /** db_field: INSURANCE_ID; desc: 保险标识 */
    @ApiModelProperty("保险标识")
    @TableField("INSURANCE_ID")
    private String insuranceId;

    /** db_field: HOME_PLACE; desc: 籍贯地址 */
    @ApiModelProperty("籍贯地址")
    @TableField("HOME_PLACE")
    private String homePlace;

    /** db_field: SECRET_LEVEL; desc: 0或空：普通，1：秘密，2：机密，3：绝密 */
    @ApiModelProperty("0或空：普通，1：秘密，2：机密，3：绝密")
    @TableField("SECRET_LEVEL")
    private Integer secretLevel;

    /** db_field: INSERT_DATE; desc: 创建时间 */
    @ApiModelProperty("创建时间")
    @TableField("INSERT_DATE")
    private Date insertDate;

    /** db_field: INSUR_CLASS; desc: 保险类别 */
    @ApiModelProperty("保险类别")
    @TableField("INSUR_CLASS")
    private String insurClass;

    /** db_field: IS_FROZEN; desc: IS_FROZEN */
    @ApiModelProperty("IS_FROZEN")
    @TableField("IS_FROZEN")
    private Long isFrozen;

    /** db_field: INSUR_NO; desc: 保险号 */
    @ApiModelProperty("保险号")
    @TableField("INSUR_NO")
    private String insurNo;

}